package cn.tedu.simple;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

//模拟简单模式中的生产者
public class SimpleProducer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1.创建连接工厂对象
        ConnectionFactory cf = new ConnectionFactory();
        cf.setHost("192.168.8.100");
        cf.setPort(5672);   //默认端口号，可以省略不写
        cf.setUsername("test");
        cf.setPassword("test");
        cf.setVirtualHost("/");  //如果不指定虚拟主机，默认是"/",可以省略不写
        //2.通过连接工厂对象创建tcp连接对象，通过tcp连接对象创建channel
        Connection nc = cf.newConnection();
        Channel cc = nc.createChannel();
        //3.通过channel创建队列
        //第一个参数：队列的名称
        //第五个参数：其他属性设置
        cc.queueDeclare("simple.queue", false, false, false, null);
        //4.生产者准备数据
        String msg = "hello world" + System.currentTimeMillis();
        //5.发送数据
        //第一个参数，写成"" ,双引号之间不要加空格
        //第二个参数，先写成队列名，后续再将其他的作用
        //第三个参数，其他属性配置，先写成null
        //第四个参数，发送的数据，需要将要发送的数据转成byte[]
        cc.basicPublish("", "simple.queue", null, msg.getBytes(StandardCharsets.UTF_8));
        //可输出提示信息
        System.out.println("发送成功");
        //6.关闭连接
        nc.close();
    }
}
